package jsp;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/config")
public class ConfigServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 想要获取全局初始化参数值,必须通过application对象获取
        // 因此,需要先获取到application对象,此处是Servlet不是JSP,没有预先定义,需要手动获取
        // 存在两种获取场景
        // 1.如果当前类是一个Servlet类,则可以直接调用父类提供的方法获取
        // 该方式仅限于Servlet中使用
        ServletContext application = getServletContext();
        System.out.println(application);
        // 2.如果当前类不是一个Servlet类,但是方法中包含了HttpServletRequest请求对象或者HttpSession会话对象
        // 可以通过请求对象或者会话对象提供的方法获取application对象
        // 该方式属于通用性,随时可用
        ServletContext application2 = req.getServletContext();
        System.out.println(application2);

        // 通过application对象提供的方法获取全局初始化参数
        String name = application.getInitParameter("name");
        System.out.println("name:" + name);

        // 通过application对象可以获取到服务器为止
        // 根路径
        String path = application2.getRealPath("");
        System.out.println("path:" + path);
        // 将图片保存到服务器根路径下的images目录中的子目录中
        // 要求每天上传的文件保存到一个子目录中,该子目录的名字为当前年月日
        // getRealPath(path):该方法的参数是相对于根路径的路径
        // 即:最终返回值为根目录+path的值
        path = application.getRealPath("/images/" + new SimpleDateFormat("yyyyMMdd").format(new Date()));
        System.out.println("path:" + path);
        File file = new File(path);
        file.mkdirs();
    }
}
